deps: update V8 to 14.9 - #64784
Conversation
|
Review requested:
|
|
|
|
@nodejs/v8-update @joyeecheung |
|
Can we try to include #64631? |
|
I will include it if it lands. |
Major V8 updates are usually API/ABI incompatible with previous versions. This commit adapts NODE_MODULE_VERSION for V8 14.9. Refs: https://github.com/nodejs/CTC/blob/master/meetings/2016-09-28.md
PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
It's causing linker errors with node.lib in node-gyp and potentially breaks other 3rd party tools Refs: nodejs#55784 PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
GCC emits warnings because of the trailing backslashes. PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
illumos pointers are VA48, can allocate from the top of the 64-bit range as well. PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
In illumos, madvise(3C) now takes `void *` for its first argument post-illumos#14418, but uses `caddr_t` pre-illumos#14418. This fix will detect if the illumos mman.h file in use is pre-or-post-illumos#14418 so builds can work either way. PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Original commit message:
GCC 15 removed avx10.2-512 target
PiperOrigin-RevId: 823560321
Refs: google/highway@989a498
Fixes: nodejs#60566
PR-URL: nodejs#61898
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
aix: simplify OS::DecommitPages implementation Replace complex mmap/munmap retry logic with mprotect + madvise approach. This fixes a race condition that was causing test failures in Node.js. Node.js stress test was run with this fix and testing shows 0 failures out of 1000 runs of wpt/test-wasm-jsapi with this patch compared to 224 failures without it. Refs: nodejs#62647 Refs: https://chromium-review.googlesource.com/c/v8/v8/+/7780464 PR-URL: nodejs#61898 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Original commit message:
[fastapi] Store v8::CFunction pointer directly in FunctionTemplateInfo
FunctionTemplateInfo objects store a list of C-function pointer and
signature pairs used to generate fast API calls. Previously, a separate
struct was allocated and wrapped in a Managed<> object to store these
pairs.
With this CL, the v8::CFunction object provided by the API is instead
wrapped in a Foreign object and stored directly in the
FunctionTemplateInfo. Replacing Managed<> objects with Foreign objects
restores the ability to serialize FunctionTemplateInfo objects.
This change relies on the assumption that the CFunction object passed to
FunctionTemplate::New outlives the FunctionTemplate itself. In practice,
all embedders—including Chrome—already ensure this by holding the
CFunction object in a static variable. In Chrome, this is how it has
always been done; see, for example:
https://source.chromium.org/chromium/chromium/src/+/main:out/android-Debug/gen/third_party/blink/renderer/bindings/modules/v8/v8_webgl2_rendering_context.cc;l=19485;drc=398e74869153a12e825bc789c2134762cbe81c36
Change-Id: Ib5eadb62b50edf7bd289a501f737750ed6e9e4fb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7828135
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Arash Kazemi <arashk@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/main@{#107265}
Refs: v8/v8@84f4af5
Original commit message:
[wasm] Make LimitsByte::is_shared() work in GCC
Importing a shared WebAssembly memory currently fails under gcc with
LinkError: ...mismatch in shared state of memory, declared = 0,
imported = 1
Since SharedFlag is `enum class : bool`, due to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96496, gcc currently
incorrectly truncates the integer instead of converting it into
boolean, so 0x3 ends up being converted to SharedFlag::kNo.
This patch works around it with an explicit conversion.
Change-Id: I426e578513b721888076c64616d2486ccae9e12a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7867245
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#107524}
Refs: v8/v8@000de18
Original commit message:
[api] Add explicit `inline` to definitions using V8_INLINE
`__forceinline` is only a hint and does not enforce inline linkage.
When `V8_INLINE` expands to just `__forceinline`, out-of-class
definitions can still violate ODR. Add explicit `inline` so it holds
across all toolchains.
Refs: nodejs#62572
Change-Id: I531f4a53e74dcaaf3b7b175cddc72e81ff6e5e4e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7874797
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#107600}
Refs: v8/v8@bfa86ad
Original commit message:
[runtime] Fix non-conforming std::atomic_flag initialization
std::atomic_flag has no constructor taking bool. Use ATOMIC_FLAG_INIT
to ensure it works across different standard library implementations.
Refs: nodejs#62572
Change-Id: If5ff61339560aa0b9a2219aad9e5b6f2fd2b1155
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7874000
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#107728}
Refs: v8/v8@70924d7
Original commit message:
[api] Add ArrayBuffer::CopyArrayBufferBytes
Make the not uncommon case of copying bytes from one ArrayBuffer to
another easier and less surprising, in particular when SharedArrayBuffer
semantics are involved.
Change-Id: I2a2bc5cba4e8c3b2d88cfcb2df0ef7e2021a8f6f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7735151
Auto-Submit: Ben Noordhuis <info@bnoordhuis.nl>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Olivier Flückiger <olivf@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#107890}
Refs: v8/v8@ba2b3f0
Original commit message:
fix(inspector): hold on to promises
Keep `m_evaluationResult` strong for evaluations
until the promise settles or the request is cancelled.
Bug: 536271637
Change-Id: If21cc4aa0ba6bb2e2722d5ee73eb7744a0ead207
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8123081
Commit-Queue: Simon Zünd <szuend@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Reviewed-by: Kim-Anh Tran <kimanh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#108874}
Refs: v8/v8@5177b10
Co-authored-by: avivkeller <me@aviv.sh>
PR-URL: nodejs#64631
Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
|
The main issue now is with |
|
I suspect the reproducibility issues come from the lack of https://chromium-review.googlesource.com/c/v8/v8/+/7816877 or friends, since it doesn't reproduce on the canary build now. Going to bisect a little.. |
|
The reproducibility issue can be fixed by https://chromium-review.googlesource.com/c/v8/v8/+/7827450 - we need to either backport that to this branch or use a branch that includes it |
|
Also we'd need this https://chromium-review.googlesource.com/c/v8/v8/+/7851015 for the GCC build |
Original commit message:
[objects] Clear optional padding on FixedArray allocations
Bug: 375937549
Change-Id: I3ddeb09552db4c10c635066fcbea4c4b549351b5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7827450
Commit-Queue: Arash Kazemi <arashk@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#107141}
Refs: v8/v8@cfeb705
Original commit message:
[wasm][build] Add missing managed-inl.h include for GCC build
Managed<CppType>::From is declared in managed.h but defined in
managed-inl.h. ld's stricter archive linking requires the
instantiating code to include the definition or otherwise
it can't be resolved at link time.
Change-Id: I13748889102b78f6dc2b794f1918390ea8f9b825
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7851015
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Joyee Cheung <joyee@igalia.com>
Cr-Commit-Position: refs/heads/main@{#107354}
Refs: v8/v8@c448358
Co-Authored-By: Joyee Cheung <joyeec9h3@gmail.com> Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Post-mortem libraries should use v8's debug_helper library instead.
- Set/GetPrototype - Holder Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-Off-By: Michaël Zasso <targos@protonmail.com>
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
ICU_UTIL_DATA_SHARED had been removed since https://crrev.com/c/1513615, but Node.js still defined it and relied on the removed path on Windows, so the ICU initialization in mksnapshot had been silently failing since then. https://crrev.com/c/7679153 made the failure visible so the build started breaking on Windows. Fix it by always using ICU_UTIL_DATA_STATIC since we already compile the ICU data statically in. Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
V8 bumped its wire-format version from 0x0f to 0x10. Update the expected hex in test-v8-serdes, and derive the v8 header bytes dynamically in test-runner-v8-deserializer so it tracks future bumps automatically. Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
V8 no longer supports JSON.parse on worker isolates while the shared string table is enabled. Since --harmony-struct enables that table and Node workers parse process.config during bootstrap, use direct MessageChannel instead of a worker. Signed-Off-By: Michaël Zasso <targos@protonmail.com>
|
Thanks! I cherry-picked both. |
|
Looks like there's another GCC issue: |
|
And on Windows we get:
|
|
The Windows build is complaining about the shape of the |
|
The GCC build on arm64 also appears to be failing due to the following: https://github.com/v8/v8/blob/8f08364a351ad38a60421137a09ef23953ecdd56/src/objects/simd.cc#L397 GCC expects the extension string to be (sorry @targos, didn't mean to reply over you!) |
|
I opened #65161 to update to 15.2. I'll close this one if it doesn't seem harder to fix. |
See #62572 for some context.